#include "StdAfx.h"
#include <string>
#include "Test_bcl_auto_ptr.h"
 
CPPUNIT_TEST_SUITE_REGISTRATION(CTest_bcl_auto_ptr);

CTest_bcl_auto_ptr::CTest_bcl_auto_ptr(void)
{
}

CTest_bcl_auto_ptr::~CTest_bcl_auto_ptr(void)
{
}

void CTest_bcl_auto_ptr::AssertAutoPtrConstructor()
{
	bcl::auto_ptr<std::string> sp(new std::string("hello world"));
	CPPUNIT_ASSERT(sp.get());
	CPPUNIT_ASSERT(strcmp(sp.get()->c_str(),"hello world") == 0);
}

void CTest_bcl_auto_ptr::AssertOwnershipTransfer()
{
	bcl::auto_ptr<int> sp1(new int(1));
	bcl::auto_ptr<int> sp2;
	sp2 = sp1;
	CPPUNIT_ASSERT(sp1.get() == 0);
	*sp2 += 10;
	sp1 = sp2;
	CPPUNIT_ASSERT(sp1.get());
	CPPUNIT_ASSERT(*sp1 == 11);
	CPPUNIT_ASSERT(sp2.get() == NULL);

}
